class Query {
  /**
   * @param {object} geom 通过交互式的画笔拿到的对象type='box'
   * @param {object} service {docName,layerId}
   */
  /* 封装的基于几何图形查询 */
  static queryByGeom({ geom, service, callback }) {
    var queryStruct = new Zondy.Service.QueryFeatureStruct()
    //是否包含几何图形信息
    queryStruct.IncludeGeometry = true
    //是否包含属性信息
    queryStruct.IncludeAttribute = true
    //是否包含图形显示参数
    queryStruct.IncludeWebGraphic = false
    //2、创建一个用于查询的区,根据画布创建的几何图形进行查询
    var geomObj = new Zondy.Object.Polygon()
    geomObj.setByOL(geom)
    //3、设置查询参数
    var rule = new Zondy.Service.QueryFeatureRule({
      //是否将要素的可见性计算在内
      EnableDisplayCondition: false,
      //是否完全包含
      MustInside: false,
      //是否仅比较要素的外包矩形
      CompareRectOnly: false,
      //是否相交
      Intersect: true,
    })
    //实例化查询参数对象
    var queryParam = new Zondy.Service.QueryParameter({
      geometry: geomObj,
      resultFormat: 'json',
      struct: queryStruct,
      rule: rule,
    })
    // //设置查询分页号
    // queryParam.pageIndex = 0
    // //设置查询要素数目
    // queryParam.recordNumber = 20
    //4、调用服务,实现查询
    var queryService = new Zondy.Service.QueryDocFeature(
      queryParam,
      service.docName,
      service.layerId,
      {
        ip: 'localhost',
        port: '6163', //访问IGServer的端口号，.net版为6163，Java版为8089
      }
    )
    //执行查询操作，querySuccess为查询回调函数
    queryService.query(callback)
  }
  /* 根据属性查询 核心where */
  static queryBySql({ where, service, callback }) {
    /* 实现属性查询语句 */
    //1、确定查询结构
    var queryStruct = new Zondy.Service.QueryFeatureStruct()
    //是否包含几何图形信息
    queryStruct.IncludeGeometry = true
    //是否包含属性信息
    queryStruct.IncludeAttribute = true
    //是否包含图形显示参数
    queryStruct.IncludeWebGraphic = false
    //2、实例化查询参数
    var queryParam = new Zondy.Service.QueryParameter({
      resultFormat: 'json',
      struct: queryStruct,
    })
    /* 设置查询条件 */
    queryParam.where = where
    /* 3、调用服务器 */
    //实例化地图文档查询服务对象
    var queryService = new Zondy.Service.QueryDocFeature(
      queryParam,
      service.docName,
      service.layerId,
      {
        ip: 'localhost',
        port: '6163', //访问IGServer的端口号，.net版为6163，Java版为8089
      }
    )
    //执行查询操作，querySuccess为查询回调函数
    queryService.query(callback)
  }
  /* 矢量图层查询,基于图层名称 */
  static queryByLayerUrl({ url, callback }) {
    var queryStruct = new Zondy.Service.QueryFeatureStruct()
    //是否包含几何图形信息
    queryStruct.IncludeGeometry = true
    //是否包含属性信息
    queryStruct.IncludeAttribute = true
    //是否包含图形显示参数
    queryStruct.IncludeWebGraphic = false
    //创建查询的图层路径,提前存储在空间数据库中
    var LayerNameUrl = url
    //实例化查询参数对象
    var queryParam = new Zondy.Service.QueryByLayerParameter(LayerNameUrl, {
      resultFormat: 'json',
      struct: queryStruct,
    })
    //设置查询分页号
    queryParam.pageIndex = 0
    //设置查询要素数目
    queryParam.recordNumber = 20
    //实例化地图文档查询服务对象
    var queryService = new Zondy.Service.QueryLayerFeature(queryParam, {
      ip: 'localhost',
      port: '6163', //访问IGServer的端口号，.net版为6163，Java版为8089
    })
    //执行查询操作，querySuccess为查询回调函数
    queryService.query(callback)
  }
}
export { Query }
